home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Ham Radio
/
Ham Radio CD-ROM (Emerald Software) (1995).ISO
/
ant
/
antenna2
/
linscan.bas
< prev
next >
Wrap
BASIC Source File
|
1986-08-12
|
3KB
|
87 lines
10 CLS
20 KEY OFF:KEY 10,""
30 ' MAY 29, 1986
40 T$="ARRAY FACTOR OF N LINEAR ELEMENTS":LC=1:GOSUB 860
50 ' AHMAD FAIZAL MOHD ZAIN
60 '
70 PRINT: PRINT:PRINT:PRINT
80 DIM Y(360)
90 PI=3.141592
100 DEF FN LOGTEN(X)=LOG(X)/LOG(10)
110 DEF FN F(PSI)=(SIN(N*PSI/2)/SIN(PSI/2))/N
120 DEF FN G(PSI)=COS(N*PSI/2)/COS(PSI/2)
130 INPUT "SCAN ANGLE IN DEGREES";THE0
140 INPUT "SEPERATION IN LAMBDA ";D
150 INPUT "# OF ELEMENTS ";N
160 SCREEN 2,0:CLS:KEY OFF
170 LOCATE 25,1:PRINT"F10=QUIT <cur up>=increase SCAN <cur down>=decrease SCAN"
180 IF THE0>360 THEN THE0=THE0-360 ELSE 200:GOTO 180
190 IF THE0<-360 THEN THE0=THE0+360 ELSE 200:GOTO 190
200 TT=PI*THE0/180
210 ALPR=-2*PI*D*COS(TT)
220 ALP=ALPR*180/PI
230 VIEW (126,23)-(516,185),,2
240 PSI0=ALPR+2*PI*D*COS(0)
250 YMAX=0
260 LOCATE 1,10:PRINT USING "NUMBER OF ELEMENTS : ###";N;
270 LOCATE 1,40:PRINT USING "ELEMENTS SPACING : ##.##";D;:PRINT" LAMBDA"
280 LOCATE 2, 5:PRINT USING "PROGRESSIVE PHASE SHIFT : ####.##";ALP;:PRINT" DEG"
290 LOCATE 2,46:PRINT USING "SCAN ANGLE : ####.##";THE0;:PRINT" DEG"
300 GOSUB 440
310 A$=INKEY$:IF LEN(A$)<>2 THEN 310
320 AN=ASC(MID$(A$,2,1))
330 IF AN=72 THEN THE0=THE0+10:GOTO 390
340 IF AN=80 THEN THE0=THE0-10:GOTO 390
350 IF AN=77 THEN THE0=THE0+5:GOTO 390
360 IF AN=75 THEN THE0=THE0-5:GOTO 390
370 IF AN=68 THEN GOSUB 800
380 GOTO 310
390 LOCATE 1,10:PRINT USING "NUMBER OF ELEMENTS : ###";N;
400 LOCATE 1,40:PRINT USING "ELEMENTS SPACING : ##.##";D;:PRINT" LAMBDA"
410 LOCATE 2, 5:PRINT USING "PROGRESSIVE PHASE SHIFT : ####.##";ALP;:PRINT" DEG"
420 LOCATE 2,46:PRINT USING "SCAN ANGLE : ####.##";THE0;:PRINT" DEG"
430 GOTO 180
440 '
450 LOCATE 13,36:PRINT"PLEASE WAIT"
460 FOR TH=0 TO 180
470 X=TH*PI/180
480 PSI=ALPR+2*PI*D*COS(X)
490 IF SIN(PSI/2)=0 THEN Y(TH)=1
500 IF SIN(PSI/2)=0 THEN GOTO 520
510 Y(TH)=ABS(FN F(PSI))
520 Y(360-TH)=Y(TH)
530 IF Y(TH)>YMAX THEN YMAX=Y(TH)
540 NEXT TH
550 '
560 WINDOW (-YMAX,-YMAX)-(YMAX,YMAX)
570 '
580 CLS
590 LOCATE 13,12:PRINT"180"
600 LOCATE 13,67:PRINT"0"
610 CIRCLE (0,0),YMAX,1
620 CIRCLE (0,0),.75*YMAX,1
630 CIRCLE (0,0),.5*YMAX,1
640 CIRCLE (0,0),.25*YMAX,1
650 LINE (-YMAX,0)-(YMAX,0),1
660 LINE (0,YMAX)-(0,-YMAX),1
670 LINE (-.707*YMAX,.707*YMAX)-(.707*YMAX,-.707*YMAX),1
680 LINE (-.707*YMAX,-.707*YMAX)-(.707*YMAX,.707*YMAX),1
690 '
700 IF PSI0=0 THEN PSET (YMAX,0) ELSE PSET (FN F(PSI0),0)
710 FOR TH=0 TO 360
720 XX=TH*PI/180
730 X=Y(TH)*COS(XX)
740 Y=Y(TH)*SIN(XX)
750 LINE -(X,Y),2
760 NEXT TH
770 RETURN
780 LOCATE 1,1
790 '
800 T$="DO YOU WANT TO RUN AGAIN (Y/N)? ":LC=25:GOSUB 860
810 AN$=INKEY$
820 IF AN$="Y" OR AN$="y" THEN RUN
830 IF AN$="N" OR AN$="n" THEN END
840 GOTO 800
850 :
860 LOCATE LC,(80-LEN(T$))/2+1:PRINT T$;:RETURN 'SUBROUTINE TO CENTRE TEXT